Identifying contacts

ABSTRACT

The present disclosure may include receiving a query from a computing device at a server having a database, the query identifying a desired attribute. The present disclosure may also include searching the database to identify contact information for at least one individual having the attribute corresponding to the query. The attribute may include at least one of skills, expertise, product, organization, geography and language The contact information may be transmitted to the computing device via an electronic message identifying the contact information.

BACKGROUND

This disclosure relates to a system and method for identifying contactsand, more particularly, to a system and method for sorting contactsaccording to an organizational or social networking database.

Today, email may be used as a general tool for broad collaboration.Email has led to an explosion of messaging in which many peoplecommunicate and share content. However, the mechanisms that we have tosend, receive and process email do not lend themselves to successfulcollaboration in a broader context.

In corporate environments it is often the case that someone may besearching for the “right person” to help resolve an outstanding issuefacing the company. These issues may be related to any issue facing thecompany, such as a process, product, or even an issue with a customer.Typically, the person searching may rely upon his/her immediate networkof contacts to identify the “right person” for the task. Unfortunately,merely resorting to that person's immediate network of contacts mayresult in a time-consuming process, which may not yield the bestresults.

BRIEF SUMMARY

In a first implementation, a computer-implemented method may includereceiving a query from a computing device at a server having a database,the query identifying a desired attribute. The method may also includesearching the database to identify contact information for at least oneindividual having the attribute corresponding to the query, theattribute including at least one of skills, expertise, product,organization, geography and language. The method may further includetransmitting the contact information to a computing device using anelectronic message including the contact information.

In a second implementation, a computer program product comprising acomputer readable storage medium having computer readable program codeembodied therewith is provided. The computer-readable program code maybe configured to receive a query from a computing device at a serverhaving a database, the query identifying a desired attribute. Thecomputer-readable program code may also be configured to search thedatabase to identify contact information for at least one individualhaving the attribute corresponding to the query. The attribute mayinclude at least one of skills, expertise, product, organization,geography and language. The computer-readable program code may befurther configured to transmit the contact information to the computingdevice using an electronic message including the contact information.

In a third implementation a computing system is provided. The computingsystem may include a processor and a memory architecture coupled withthe processor. The computing system may also include a first softwaremodule executed on the processor and the memory architecture, whereinthe first software module is configured to transmit a query from acomputing device to a server having a database, the query identifying adesired attribute. The computing system may further include a secondsoftware module executed on the at least one processor and the at leastone memory architecture, wherein the second software module isconfigured to receive contact information for at least one individualhaving the attribute corresponding to the query. The attribute mayinclude at least one of skills, expertise, product, organization,geography and language. Additionally, the computing system may alsoinclude a third software module executed on the at least one processorand the at least one memory architecture, wherein the third softwaremodule is configured to generate an ordered rating based upon, at leastin part, the contact information.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features andadvantages will become apparent from the description, the drawings, andthe claims.

FIG. 1 is a diagrammatic view of an identifying process and an emailclient application coupled to a distributed computing network;

FIG. 2 is a diagrammatic view of a display screen rendered by theidentifying process and/or email client application of FIG. 1;

FIG. 3 is a diagrammatic view of a display screen rendered by theidentifying process and/or email client application of FIG. 1;

FIG. 4 is a diagrammatic view of a display screen rendered by theidentifying process and/or email client application of FIG. 1;

FIG. 5 is a diagrammatic view of a display screen rendered by theidentifying process and/or email client application of FIG. 1; and

FIG. 6 is a flowchart depicting operations in accordance with theidentifying process described herein.

Like reference symbols in the various drawings may indicate likeelements.

DETAILED DESCRIPTION

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer-readable(i.e., computer-usable) medium(s) having computer-usable program codeembodied thereon.

Any combination of one or more computer-readable medium(s) may beutilized. The computer-readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer-readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, a device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer-readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. Note that the computer-readable storage medium could even bepaper or another suitable medium upon which a program is printed, as theprogram can be electronically captured, via, for instance, opticalscanning of the paper or other medium, then compiled, interpreted, orotherwise processed in a suitable manner, if necessary, and then storedin a computer memory. In the context of this document, acomputer-readable storage medium may be any medium that can contain, orstore a program for use by or in connection with an instructionexecution system, apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer-usable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer-readable medium thatcan contain, store, communicate, propagate, or transport a program foruse by or in connection with an instruction execution system, apparatus,or device.

Program code embodied on a computer-readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc.

Computer program code for carrying out operations of aspects of thepresent invention may be written in an object oriented programminglanguage such as Java, Smalltalk, C++ or the like. However, the computerprogram code for carrying out operations of aspects of the presentinvention may also be written in conventional procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The program code may execute entirely on the user's computer,partly on the user's computer, as a stand-alone software package, partlyon the user's computer and partly on a remote computer or entirely onthe remote computer or server. In the latter scenario, the remotecomputer may be connected to the user's computer through a local areanetwork (LAN) or a wide area network (WAN), or the connection may bemade to an external computer (for example, through the Internet using anInternet Service Provider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in acomputer-readable memory that can direct a computer or otherprogrammable data processing apparatus to function in a particularmanner, such that the instructions stored in the computer-readablememory produce an article of manufacture including instruction meanswhich implement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer orother performed on the computer or other programmable apparatus toproduce a computer implemented process such that the instructions whichexecute on the computer or other programmable apparatus provide stepsfor implementing the functions/acts specified in the flowchart and/orblock diagram block or blocks.

Referring to FIG. 1, there is shown identifying process 10 that mayreside on and may be executed by server computer 12, which may beconnected to network 14 (e.g., the Internet or a local area network).Examples of server computer 12 may include, but are not limited to: apersonal computer, a server computer, a series of server computers, amini computer, and a mainframe computer. Server computer 12 may be a webserver (or a series of servers) running a network operating system,examples of which may include but are not limited to: Microsoft®Windows® Server; Novell® NetWare®; or Red Hat® Linux®, for example(Microsoft and Windows are registered trademarks of MicrosoftCorporation in the United States, other countries or both; Novell andNetWare are registered trademarks of Novell Corporation in the UnitedStates, other countries or both; Red Hat is a registered trademark ofRed Hat Corporation in the United States, other countries or both; andLinux is a registered trademark of Linus Torvalds in the United States,other countries or both), for example. As will be discussed below ingreater detail, identifying process 10 may include receiving a query ata server having a database and searching the database to identifycontact information for at least one individual having an attributecorresponding to the query. The method may further include transmittingthe contact information to a computing device.

The instruction sets and subroutines of identifying process 10, whichmay be stored on storage device 16 coupled to server computer 12, may beexecuted by one or more processors (not shown) and one or more memoryarchitectures (not shown) incorporated into server computer 12. Storagedevice 16 may include, but is not limited to, a hard disk drive; a tapedrive; an optical drive; a RAID array; a random access memory (RAM); anda read-only memory (ROM).

Server computer 12 may execute a web server application, examples ofwhich may include but are not limited to: Microsoft IIS, NovellWebserver™, or Apache Webserver, that allows for HTTP (i.e., HyperTextTransfer Protocol) access to server computer 12 via network 14(Webserver is a trademark of Novell Corporation in the United States,other countries, or both; and Apache is a registered trademark of ApacheSoftware Foundation in the United States, other countries, or both).Network 14 may be connected to one or more secondary networks (e.g.,network 18), examples of which may include, but are not limited to, alocal area network; a wide area network; or an intranet, for example.

Server computer 12 may execute email server application 20, examples ofwhich may include, but are not limited to, e.g., IBM® Lotus® Domino®Server and Microsoft Exchange® Server (IBM, Lotus, and Domino areregistered trademarks of International Business Machines Corporation inthe United States, other countries or both; Exchange is a registeredtrademark of Microsoft Corporation in the United States, other countriesor both). Email server application 20 may be a mail transfer agent thatmay store and route email to one or more email client applications 22,24, 26, 28, examples of which may include but are not limited to LotusNotes and Microsoft Outlook® (Lotus Notes is a registered trademark ofInternational Business machines Corporation in the United States, othercountries, or both; and Outlook is a registered trademark of MicrosoftCorporation in the United States, other countries, or both). Identifyingprocess 10 may be a stand alone application that interfaces with emailserver application 20 or an applet/application that is executed withinemail server application 20.

The instruction sets and subroutines of email client applications 22,24, 26, 28, which may be stored on storage devices 30, 32, 34, 36(respectively) coupled to client electronic devices 38, 40, 42, 44(respectively), may be executed by one or more processors (not shown)and one or more memory architectures (not shown) incorporated intoclient electronic devices 38, 40, 42, 44 (respectively). Storage devices30, 32, 34, 36 may include, but are not limited to, hard disk drives,tape drives, optical drives, RAID arrays, random access memories (RAM),read-only memories (ROM), compact flash (CF) storage devices, securedigital (SD) storage devices, and memory stick storage devices. Examplesof computing devices 38, 40, 42, 44 may include, but are not limited to,personal computer 38, laptop computer 40, personal digital assistant 42,notebook computer 44, a data-enabled, cellular telephone (not shown),and a dedicated network device (not shown), for example. Using emailclient applications 22, 24, 26, 28, users 46, 48, 50, 52 may accessemail server application 20 and may retrieve and/or organize emailmessages.

Users 46, 48, 50, 52 may access email server application 20 directlythrough the device on which the email client application (e.g., emailclient applications 22, 24, 26, 28) is executed, namely clientelectronic devices 38, 40, 42, 44, for example. Users 46, 48, 50, 52 mayaccess email server application 20 directly through network 14 orthrough secondary network 18. Further, server computer 12 (i.e., thecomputer that executes email server application 20) may be connected tonetwork 14 through secondary network 18, as illustrated with phantomlink line 54.

The various client electronic devices may be directly or indirectlycoupled to network 14 (or network 18). For example, personal computer 38is shown directly coupled to network 14 via a hardwired networkconnection. Further, notebook computer 44 is shown directly coupled tonetwork 18 via a hardwired network connection. Laptop computer 40 isshown wirelessly coupled to network 14 via wireless communicationchannel 56 established between laptop computer 40 and wireless accesspoint (i.e., WAP) 58, which is shown directly coupled to network 14. WAP58 may be, for example, an IEEE 802.11a, 802.11b, 802.11g, Wi-Fi, and/orBluetooth device that is capable of establishing wireless communicationchannel 56 between laptop computer 40 and WAP 58. Personal digitalassistant 42 is shown wirelessly coupled to network 14 via wirelesscommunication channel 60 established between personal digital assistant42 and cellular network/bridge 62, which is shown directly coupled tonetwork 14.

As is known in the art, all of the IEEE 802.11x specifications may useEthernet protocol and carrier sense multiple access with collisionavoidance (i.e., CSMA/CA) for path sharing. The various 802.11xspecifications may use phase-shift keying (i.e., PSK) modulation orcomplementary code keying (i.e., CCK) modulation, for example.

Client electronic devices 38, 40, 42, 44 may each execute an operatingsystem, examples of which may include but are not limited to MicrosoftWindows, Microsoft Windows CE®, Red Hat Linux, or a custom operatingsystem (Windows CE is a registered trademark of Microsoft Corporation inthe United States, other countries, or both).

This disclosure is directed towards an identifying process 10 configuredto receive a query, from a computing device, at a server having adatabase and to search the database to identify contact information forat least one individual having an attribute corresponding to the query.The attribute may include at least one of skills, expertise, product,organization, geography and language. Identifying process 10 may furtherinclude transmitting the contact information to the computing device.

Identifying process 10 may be a server-side process, a client-sideprocess, or a hybrid server-side/client-side process. Accordingly andfor the following disclosure, identifying process 10 shall collectivelyrefer to any and all combinations of server-side identifying process 10and/or client-side identifying processes.

For example, server-side identifying process 10 may reside on and may beexecuted by server computer 12, which may be connected to network 14(e.g., the Internet or a local area network). Examples of servercomputer 12 may include, but are not limited to, a personal computer, aserver computer, a series of server computers, a mini computer, and amainframe computer. Server computer 12 may be a web server (or a seriesof servers) running a network operating system, examples of which mayinclude but are not limited to, Microsoft® Windows® XP Server; Novell®NetWare®; or Red Hat® Linux®, for example.

For the following discussion, email client application 22 is going to bedescribed for illustrative purposes. However, this is not intended to bea limitation of this disclosure, as other email client applications(e.g., email client applications 24, 26, 28) may be equally utilized.

In the past, a corporate employee may have had difficulties locating theproper individual for help with a particular matter. For example, anemployee who works as part of a development team may have a conferencecall scheduled with an important customer to discuss the current productissues encountered with a particular product. Here, the employee maywant the assistance of a software engineer in the support group that maybe able to assist him/her in answering some of the questions regardingthe product. It may be likely, however, that the employee does not knowanyone in the support group. The employee may then be forced to “askaround” to his/her coworkers to try to locate the desired individual.This type of situation could possibly take days or even weeks to locatethe correct individual.

Identifying process 10 may be used in a variety of different situationssuch as the one described above, to identify the desired individual in aquick and efficient manner. Referring also to FIG. 2, email clientapplication 22 (alone or in combination with identifying process 10and/or email server application 20) may allow a user (e.g., user 46) togenerate and/or transmit email message 150 that may be addressed to oneor more attributes. Email message 150 may be addressed using variousaddressing fields, e.g., “TO” recipients 152, “CC” (i.e., carbon copy)recipients 154, and “BCC” (i.e., blind carbon copy) recipients 156.Further, email message 150 may include message content 158 (i.e., thebody of the email message). Email message 150 may include attributesearch tool 160 and/or attribute selector 162, which when activated, mayallow a user, through identifying process 10, to generate a query toidentify contact information for a specific individual or group ofindividuals having an attribute corresponding to the query. The term“attribute” as described herein may refer to an individual's Job Title,Experience, Skills, Team Membership, Projects, Organizational Hierarchy,Interests, Technical Background, Product, Geography, Language, etc.

Identifying process 10 may be configured to permit communication betweena number of computing devices, for example, between client device 38 andserver 12. In this way, server 12 may be configured to receive a queryfrom client device 38 at server 12. Server 12 may include contactinformation, which may be stored in a document, database or any othersuitable file or storage device. In some embodiments, the query may begenerated by client device 38 and received by server 12. Identifyingprocess 10 may be configured to search the database associated withserver 12 to identify contact information for at least one individualhaving an attribute corresponding to the query, the attribute includingat least one of skills, expertise, product, organization, geography andlanguage. Identifying process 10 may further include transmitting thecontact information to client device 38.

In operation, a user, e.g., user 46 shown in FIG. 1 may wish to locatean individual having a particular attribute, e.g., software engineeringexperience. As such, identifying process 10 may allow user 46 to locatean individual (e.g., software engineer) within his/her company withoutoriginally knowing the person's name. For example, user 46 may selectattribute search tool 160 and/or attribute activator 162 to activateidentifying process 10. User 46 may select one or more attributes fromdrop-down 170 menu shown corresponding to attribute search tool 160. Inthis example, user 46 may select the “Expertise” option from drop-downmenu 170. User 46 may then be prompted to enter and/or select thespecific type of experience that he/she desires in the soughtindividual. For example, user 46 may select the “Expertise” option fromdrop-down menu 170 of attribute search tool 160 using pointer 164. Oncethe “Expertise” option has been selected an additional drop-down menu172 may be provided, thus showing a list of all of different types of“Expertise” available.

Alternatively and/or additionally, user 46 may indicate the type ofexpertise required using, for example, “TO” field 152. In someembodiments, identifying process 10 may automatically populate “TO”field 152 with the term “software” once selected, or alternatively, user46 may enter this term into “TO” field 152 or any of fields 152, 154,156, and/or 166. The relevant fields may be populated with all selectedattributes with the embedded ranking/importance of the attribute.

Although, attribute search tool 160 is shown in FIG. 2 as a drop-downmenu, it should be noted that identifying process 10 may be activatedusing any suitable technique. For example, identifying process 10 may beactivated using right-click activation, keystroke entry, buttonselection and/or alternative selection tools associated with emailclient application 22, etc.

Once the desired attribute has been selected by user 46, user 46 maydecide to send a query using, for example, attribute activator 162and/or “send” button 168. Once selected, identifying process 10 may thengenerate and/or transmit the query from client device 38, which may bereceived by server 12. Server 12 may then search for contact informationcorresponding to one or more individuals who have experience in thesoftware group. Once this information has been obtained it may betransmitted back to client device 38 for review.

Referring now to FIG. 3, client device 38 may then receive the contactinformation from server 12 and display the results to user 46 via emailclient application 200. User 46 may then review the results for the mostsuitable individual and may then compose and/or transmit message 150 tothe identified individual using the supplied contact information.Although much of the discussion contained herein has been in the contextof email messaging, the present disclosure is not limited to suchapplications, as the embodiments described herein may be applied toinstant messaging, short message service (SMS) messaging, paging, etc.

In some embodiments, identifying process 10 may provide a rating 180 forreview by the user. As shown in FIG. 3, rating 180 may be provided infields 152, 154, 156, etc. Moreover, identifying process 10 may providethe rated individuals in an order, such as that shown in FIG. 3. Forexample, the highest rated individual may be automatically populated in“TO” field 152, the next highest in “CC” field 154, etc. Here, sinceBeth James is rated at 99% her name is populated in “TO” field 152 asthe default selection. However, identifying process 10 may also allowfor user-editable functionality. Thus, a user such as user 46 may beprovided with an extensive listing of individuals having the attributesrequested by the initial query. This listing may be provided to the userusing any suitable technique. Once the user has selected his/her choicethe individual's name and/or email address may be populated in thefields as described above. In some embodiments, server 12 may use therating to select the one or more individuals whose contact informationmay be transmitted back to client device 38. The rating may be assignedbased upon feedback from other users, the level of match between thequery and the contact information of the individual, how the individualrates themselves, etc. For example, the rating may correspond to amatching percentage of the individuals' skills, expertise, product,organization, geography and language with the original query. That is,an identified individual having the requisite technical skills in aforeign office of the corporation may receive a less favorable ratingthan an identified individual having the requisite skills who operatesout of the same office as the original user. Once the task has beencompleted, the user may provide feedback to the system, i.e., he/she maythen rate the individual, which may be used by identifying process 10 toupdate the system and to improve its accuracy.

In some embodiments, identifying process 10 may be configured toidentify individuals in accordance with an organizational hierarchy ordatabase. The organizational hierarchy may include a corporate directoryor similar feature that may map the reporting lines and organizationalrelationships between employees of a company. For example, in someembodiments, a lightweight directory access protocol (LDAP) or similarapplication protocol may be used to query and/or modify a hierarchicaldirectory structure. In this way, identifying process 10 may provide away of communicating with an LDAP server to determine the correct groupof individuals and/or group name, as well as the order in which group ofcontacts 162 are displayed e.g., in address fields 152, 154, and 156.Identifying process 10 may also be configured to display the group ofindividuals at a computing device, e.g., computing device 38.

Alternatively, and/or additionally, in some embodiments, identifyingprocess 10 may be configured to operate in accordance with a socialnetworking system. The social networking system may be capable ofmapping, for example, the user's 1^(st), 2″, and 3 ^(r) level ofrelationships between the users of the email network based on thefrequency and nature of their interactions. Some exemplary socialnetworking systems include, but are not limited to Facebook® andLinkedin®, which may utilize a gated access approach to connectdifferent users through various levels of relationships (Linkedin® is aregistered trademark of Linkedin Corp. in the United States, othercountries, or both; Facebook® is a registered trademark of Facebook,Inc. in the United States, other countries, or both). In any of theembodiments described herein, the user may specify where to send thequery and/or where to obtain the contact information, for example, to anorganizational database as described above or alternatively using asocial networking site such as Linkedin®. Of course, identifying process10 may be used in accordance with any suitable database and/or filestoring system. In other words, the location of contact information isnot limited to the examples described herein.

Referring now to FIG. 4 another embodiment depicting a display screen300 is shown in accordance with identifying process 10. Display screen300 may allow a user to select a group from a directory 302. Directory302 may be configured to provided a communication link between theuser's computing device, e.g. client device 38, and the database orrepository that includes the contact information for the individualhaving the attribute or attributes desired by the user. As shown in FIG.4, this contact information may be located, for example, in server 12and may be associated with a corporate directory such as an LDAPdirectory or a social networking application such as Linkedin®.

In operation, the user may select “TO” field 304 to indicate that he/shewishes to compose a message. This may be achieved by selecting a button,right-clicking, etc. Once the user has activated identifying process 10,he/she may select an option from directory 302. For example, the usermay select the “Virtual Groups” option from directory 302 using pointer306 or other suitable methods.

Referring now to FIG. 5, a display screen 400 depicting a “VirtualGroups” directory in accordance with identifying process 10 is shown.Display screen 400 includes a plurality of attributes 402. As discussedabove, attributes 402 may include, but are not limited to, anindividual's Job Title, Experience, Skills, Team Membership, Projects,Organization and/or Organizational Hierarchy, Interests, TechnicalBackground, Product, Geography, Language, etc. Display screen 400 mayprovide the user with an option to select at least one specificattribute from a plurality of attribute fields 404. The selection of oneor more attributes may allow a sender to pinpoint the relevant person orpersons without knowing who to contact. As shown in FIG. 5, attributefields 404 may be presented using a drop-down menu or any other suitabletechnique. For example, the user may desire assistance from someone whocan speak French who works in customer support. Additionally, displayscreen 400 may include a weighting feature 406. Weighting feature 406may allow a user to indicate the importance attached to each of theattributes selected. For example, a user may attach a more significantimportance upon locating someone who is in customer support and whospeaks French, than that person's location. In this way, the user mayselect the “5” weighting for the language and skills attributes, whileonly selecting a “1” weighting for the geography attribute as shown inFIG. 5.

Identifying process 10 may then send the query, as discussed above,using weighting feature 406. Weighting feature 406 may function as aguide for identifying process 10 in locating the contact information forthe most suitable individual in accordance with the selected weightingfactors. In some embodiments, any or all of the components shown indisplay screen 400 may be configurable using any number of suitabletechniques. For example, attributes 402 and attribute fields 404 may beuser-configurable, configurable by an administrator, and/or acombination of both the user and an administrator. Similarly, weightingfeature 406 may also be configurable in the same manner.

As discussed above, identifying process 10 may operate as a client-side,server-side or hybrid client-server side process. The query may betransmitted from a computing device and/or received at the computingdevice, for example, computing device 38. Thus, in some embodiments, thequery may be composed at a client device and transmitted to a server forsubsequent searching and/or identification of individuals havingattributes corresponding to the query.

Referring now to FIG. 6, a method 500 depicting operations in accordancewith identifying process 10 is provided. Operations may includereceiving a query from a computing device at a server having a database,the query identifying a desired attribute (502). Operations may alsoinclude searching the database to identify contact information for atleast one individual having the attribute corresponding to the query,the attribute including at least one of skills, expertise, product,organization, geography and language (504). Operations may additionallyinclude transmitting an electronic message including the contactinformation to the computing device (506). Operations may furtherinclude determining a rating of each of a plurality of individualshaving the attribute (508). Operations may also include selecting the atleast one individual based upon, at least in part, the rating (510).Numerous additional operations are also envisioned without departingfrom the scope of the present disclosure.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of aspects of the present invention. In this regard, eachblock in the flowchart or block diagrams may represent a module,segment, or portion of code, which comprises one or more executableinstructions for implementing the specified logical function(s). Itshould also be noted that, in some alternative implementations, thefunctions noted in the block may occur out of the order noted in thefigures. For example, two blocks shown in succession may, in fact, beexecuted substantially concurrently, or the blocks may sometimes beexecuted in the reverse order, depending upon the functionalityinvolved. It will also be noted that each block of the block diagramsand/or flowchart illustration, and combinations of blocks in the blockdiagrams and/or flowchart illustration, can be implemented by specialpurpose hardware-based systems that perform the specified functions oracts, or combinations of special purpose hardware and computerinstructions.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

A number of implementations have been described. Nevertheless, it willbe understood that various modifications may be made. Accordingly, otherimplementations are within the scope of the following claims. Forexample, and as discussed above, although most of the discussioncontained herein has focused upon email messages, this disclosure is notlimited to these examples, as the identifying process described hereinmay be applied to calendar invitations and various other forms ofmessaging.

1-20. (canceled)
 21. A computer-implemented method for transmitting anemail, comprising: presenting, by an email client and to a user, aplurality of pre-defined attributes; receiving, from within the emailclient and from the user, a selection of at least two of the pluralityof pre-defined attributes; receiving, from within the email client andfor each of the at least two selected pre-defined attributes, a weight;forwarding, by the email client and using the at least two selectedpre-defined attributes and associated selected weights, a query to anemail server; receiving, from the email server and based upon the query,a plurality of contacts and associated contact email addresses;receiving, from with the email client, and a selection of at least oneof the plurality of contacts; and transmitting, to the selected at leastone contact and by the email client, the email using an email addressassociated with each of the selected at least one contact.
 22. Thecomputer-implemented method of claim 21, wherein each of the receivedplurality of contacts includes a rating associated therewith, and theratings are based upon the at least two selected pre-defined attributesand the associated selected weights.
 23. The computer-implemented methodof claim 22, wherein an address field in the email client is populatedwith a highest-rated one of the received plurality of contacts.
 24. Thecomputer-implemented method of claim 21, wherein at least one of theplurality of pre-defined attributes is: skills, expertise, product,organization, geography, and language.
 25. A computer hardware systemfor transmitting an email, comprising: at least one hardware processorconfigured to initiate the following executable operations: presenting,by an email client and to a user, a plurality of pre-defined attributes;receiving, from within the email client and from the user, a selectionof at least two of the plurality of pre-defined attributes; receiving,from within the email client and for each of the at least two selectedpre-defined attributes, a weight; forwarding, by the email client andusing the at least two selected pre-defined attributes and associatedselected weights, a query to an email server; receiving, from the emailserver and based upon the query, a plurality of contacts and associatedcontact email addresses; receiving, from with the email client and bythe email client, and a selection of at least one of the plurality ofcontacts; and transmitting, to the selected at least one contact, theemail using an email address associated with each of the selected atleast one contact.
 26. The computer hardware system of claim 25, whereineach of the received plurality of contacts includes a rating associatedtherewith, and the ratings are based upon the at least two selectedpre-defined attributes and the associated selected weights.
 27. Thecomputer hardware system of claim 26, wherein an address field in theemail client is populated with a highest-rated one of the receivedplurality of contacts.
 28. The computer hardware system of claim 25,wherein at least one of the plurality of pre-defined attributes is:skills, expertise, product, organization, geography, and language.
 29. Acomputer program product, comprising a storage hardware device havingstored therein computer usable instructions for transmitting anelectronic message, the computer usable instructions, which whenexecuted by a computer hardware system, cause the computer hardwaresystem to perform: presenting, by an email client and to a user, aplurality of pre-defined attributes; receiving, from within the emailclient and from the user, a selection of at least two of the pluralityof pre-defined attributes; receiving, from within the email client andfor each of the at least two selected pre-defined attributes, a weight;forwarding, by the email client and using the at least two selectedpre-defined attributes and associated selected weights, a query to anemail server; receiving, from the email server and based upon the query,a plurality of contacts and associated contact email addresses;receiving, from with the email client, and a selection of at least oneof the plurality of contacts; and transmitting, to the selected at leastone contact and by the email client, the email using an email addressassociated with each of the selected at least one contact.
 30. Thecomputer program product of claim 29, wherein each of the receivedplurality of contacts includes a rating associated therewith, and theratings are based upon the at least two selected pre-defined attributesand the associated selected weights.
 31. The computer program product ofclaim 30, wherein an address field in the email client is populated witha highest-rated one of the received plurality of contacts.
 32. Thecomputer program product of claim 29, wherein at least one of theplurality of pre-defined attributes is: skills, expertise, product,organization, geography, and language.